package com.siping.设计模式.责任链.模式2;

/**
 * 抽象处理者
 * 来考虑这样一个功能:申请聚餐费用的管理。 很多公司都是这样的福利，就是项目组或者是部门可以向公司申请一些聚餐费用，
 * 用于组织项目组成员或者是部门成员进行聚餐活动。 申请聚餐费用的大致流程一般是：
 *      由申请人先填写申请单，然后交给领导审批，如果申请批准下来，领导会通知申请人审批通过，然后申请人去财务领取费用，
 * 如果没有批准下来，领导会通知申请人审批未通过，此事也就此作罢。 
 *  不同级别的领导，对于审批的额度是不一样的，比如，项目经理只能审批500元以内的申请；部门经理能审批1000元以内的申请；
 *  而总经理可以审核任意额度的申请。 也就是说，当某人提出聚餐费用申请的请求后，
 * 该请求会经由项目经理、部门经理、总经理之中的某一位领导来进行相应的处理，但是提出申请的人并不知道最终会由谁来处理他的请求，
 * 一般申请人是把自己的申请提交给项目经理，或许最后是由总经理来处理他的请求。 
 * 可以使用责任链模式来实现上述功能：当某人提出聚餐费用申请的请求后，该请求会在 项目经理—〉部门经理—〉总经理 
 * 这样一条领导处理链上进行传递，发出请求的人并不知道谁会来处理他的请求，每个领导会根据自己的职责范围，
 * 来判断是处理请求还是把请求交给更高级别的领导，只要有领导处理了，传递就结束了。
 * @date 2018年1月4日 下午3:16:13
 * @author yangxu
 * @version 1.0
 */
public abstract class Handler {

    /**
     * 持有后继的责任对象
     */
    protected Handler successor;
    
    /**
     * 处理聚餐费用的申请
     * @param user 申请人
     * @param fee 申请的费用
     */
    public abstract String handleFeeRequest(String user, double fee);

    public Handler getSuccessor() {
        return successor;
    }

    public void setSuccessor(Handler successor) {
        this.successor = successor;
    }
}
